const Controller = require('egg').Controller
const path = require('path')
const fs = require('fs')

class UploadController extends Controller {
	// 上传
	async upload() {
		const { ctx, app } = this
		const file = ctx.request.files[0]
		// 第一个参数是图片上传后的名字
		// 第二个参数，传递图片的绝对路径
		try {
			const data = await ctx.oss.put(
				`egg-oss-imgs/${Math.random() * 100}_imgs${path.extname(
					file.filename
				)}`,
				file.filepath
			)
			ctx.body = { data }
		} catch (err) {
			ctx.body = err
		}
	}

	// 图片删除
	async deleteImage() {
		// 1. 拿到图片在oss上的路径
		const { ctx, app } = this
		const { imgPath } = ctx.query
		// const { imgPath } = ctx.request.body
		console.log(imgPath, 'imgPath')
		// 2. 传递参数，删除
		const data = await ctx.oss.delete(imgPath)
		// console.log(data, 'data')

		ctx.body = { data, imgPath }
	}

	// 图片下载
	async downloadImage() {
		// 1. 拿到图片在oss上的路径
		const { ctx, app } = this
		const { imgPath } = ctx.request.body
		// 2. 传递参数，删除 第二个参数，告诉你下载再哪个地方
		const data = await ctx.oss.get(
			imgPath,
			path.join(
				__dirname,
				`../public/imgs/${Math.random() * 100}_img${path.extname(imgPath)}`
			)
		)
		ctx.body = data
	}

	// 图片获取 （图片列举）
	async imageList() {
		const { ctx, app } = this
		const data = await ctx.oss.list()
		ctx.body = { data: data.objects }
		// ctx.body = '123'
	}
}

module.exports = UploadController
